<?php

namespace app\common\model\Post;

use think\Model;
// 引用软删除模型
use traits\model\SoftDelete;

class Post extends Model
{

    // 软删除 delete()
    use SoftDelete;

    //
    protected $table = 'pre_post';
    //指定一个自动设置的时间字段
    //开启自动写入
    protected $autoWriteTimestamp = true;

    //设置字段的名字
    protected $createTime = "createtime"; //插入的时候设置的字段名

    //禁止 写入的时间字段
    protected $updateTime = false;

    // 软删除的字段
    protected $deleteTime = 'deletetime';

    // 关联分类查询
    public function cate()
    {
        return $this->belongsTo('app\common\model\Post\Cate', 'cateid', 'id', [], 'LEFT')->setEagerlyType(0);
    }

    // 关联分类查询
    public function user()
    {
        return $this->belongsTo('app\common\model\User\User', 'userid', 'id', [], 'LEFT')->setEagerlyType(0);
    }

    //查询帖子所对应用户
    public function collect()
    {
        return $this->belongsTo('app\common\model\User\collect', 'id', 'postid', [], 'LEFT')->setEagerlyType(0);
    }

    //查询帖子所对应评论
    public function comment()
    {
        return $this->belongsTo('app\common\model\Post\Comment', 'id', 'postid', [], 'LEFT')->setEagerlyType(0);
    }

    public function getTimeAttr($value, $data)
    {
        $Time = date('Y-m-d', $data['createtime']);
        // $createtime = date('Y-m-d',$value);

        return $Time;
    }

    //获取器方法
    public function getVisitTextAttr($value, $data)
    {
        //字符串转化为数组
        $visit = explode(',', $data['visit']);
        $visit = array_filter($visit);
        return count($visit);
    }

    public function getCommentAttr($value, $data)
    {
        //加载模型
        $count = model('Post.Comment')->where(['postid' => $data['id']])->count();
        return $count;
    }

    //帖子的附加功能 // 模型定义方法
    public function state()
    {
        return [
            0 => '无附加功能', 1 => '置顶', 2 => '精华', 3 => '热门'
        ];
    }

    public function getStateTextAttr($value, $data)
    {
        //字符串转化为数组
        $statelist = [0 => '无附加功能', 1 => '置顶', 2 => '精华', 3 => '热门'];

        return $statelist[$data['state']];
    }

}
